package dao.mysql;

import dao.Entidad;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import util.DataBaseConnection;

import bean.Detalle_Pedido_Adquisicion;

public class MySQLDetalle_Pedido_AdquisicionDAO implements Entidad<Detalle_Pedido_Adquisicion>{

	@Override
	public Detalle_Pedido_Adquisicion insert(Detalle_Pedido_Adquisicion t) {
		Connection con=null;
		try {
			con=DataBaseConnection.openConnection();
			String sql="INSERT INTO detalle_pedido_adquisicion(id_pedido_adquisicion,id_producto,monto_por_prod";
			sql = sql + "cantidad) VALUES(?,?,?,?)";
			PreparedStatement ps=con.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);
			ps.setInt(1, t.getId_pedido_adquisicion());
			ps.setInt(2, t.getId_producto());
			ps.setDouble(3, t.getMonto_por_prod());
			ps.setDouble(4, t.getCantidad());
			ps.executeUpdate();
			ResultSet rs=ps.getGeneratedKeys();
			if(rs.next()){
				int id=rs.getInt(1);
				t.setId_pedido_adquisicion(id);
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DataBaseConnection.closeConnection(con);
		}
		return t;
	}

	@Override
	public int update(Detalle_Pedido_Adquisicion t) {
		Connection con=null;
		int rows = -1;
		try {
			con=DataBaseConnection.openConnection();
			String sql="UPDATE detalle_pedido_adquisicion SET monto_por_prod = ?, cantidad = ?";
			sql = sql +	"WHERE id_pedido_adquisicion=? and id_producto = ?";
			PreparedStatement ps=con.prepareStatement(sql);
			ps.setObject(1, t.getMonto_por_prod());
			ps.setObject(2, t.getCantidad());
			ps.setInt(3, t.getId_pedido_adquisicion());
			ps.setInt(4, t.getId_producto());
			rows =ps.executeUpdate();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DataBaseConnection.closeConnection(con);
		}
		return rows;
	}

	@Override
	public int delete(Detalle_Pedido_Adquisicion t) {
		Connection con=null;
		int rows=-1;
		try {
			con=DataBaseConnection.openConnection();
			String sql="DELETE FROM detalle_pedido_adquisicion WHERE id_pedido_adquisicion=? and";
			sql = sql + "id_producto = ?";
			PreparedStatement ps=con.prepareStatement(sql);
			ps.setInt(1, t.getId_pedido_adquisicion());
			ps.setInt(2, t.getId_producto());
			rows=ps.executeUpdate();
			System.out.println(rows);
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DataBaseConnection.closeConnection(con);
		}
		return rows;
	}

	@Override
	public Detalle_Pedido_Adquisicion findById(Detalle_Pedido_Adquisicion t) {
		// TODO Auto-generated method stub
				Connection con=null;
				try {
					con=DataBaseConnection.openConnection();
					String sql="SELECT * FROM detalle_pedido_adquisicion WHERE id_pedido_adquisicion=?";
					sql = sql + " id_producto = ?";
					PreparedStatement ps=con.prepareStatement(sql);
					ps.setInt(1, t.getId_pedido_adquisicion());
					ResultSet rs=ps.executeQuery();
					while(rs.next()){
						t.setId_pedido_adquisicion(rs.getInt("id_pedido_adquisicion"));
						t.setId_producto(rs.getInt("id_producto"));
						t.setMonto_por_prod(rs.getDouble("monto_por_prod"));
						t.setCantidad(rs.getDouble("cantidad"));
					}
				}catch(Exception e){
					e.printStackTrace();
				}finally{
					DataBaseConnection.closeConnection(con);
				}
				return t;
	}

	@Override
	public List<Detalle_Pedido_Adquisicion> listAll() {
		// TODO Auto-generated method stub
				List<Detalle_Pedido_Adquisicion> documentos = new ArrayList<Detalle_Pedido_Adquisicion>();
				Connection con=null;
				try {
					con=DataBaseConnection.openConnection();
					String sql="SELECT * FROM detalle_pedido_adquisicion";
					Statement st=con.createStatement();
					ResultSet rs=st.executeQuery(sql);
					while(rs.next()){
						Detalle_Pedido_Adquisicion t = new Detalle_Pedido_Adquisicion();
						t.setId_pedido_adquisicion(rs.getInt("id_pedido_adquisicion"));
						t.setId_producto(rs.getInt("id_producto"));
						t.setMonto_por_prod(rs.getDouble("monto_por_prod"));
						t.setCantidad(rs.getDouble("cantidad"));		
						documentos.add(t);
					}
				} catch (Exception e) {
					e.printStackTrace();
				}finally{
					DataBaseConnection.closeConnection(con);
				}
				return documentos;
	}

	@Override
	public List<Detalle_Pedido_Adquisicion> listAllCustom(Object... objects) {
		// TODO Auto-generated method stub
		return null;
	}

}
